package com.changan.entity;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * <p>
 * 课程用户学习日志表（记录用户学习课时的详细轨迹）
 * </p>
 *
 * @author NieChangan
 * @since 2025-09-03
 */
@Getter
@Setter
@ToString
@Accessors(chain = true)
@TableName("course_user_study_log")
public class CourseUserStudyLog extends Model<CourseUserStudyLog> {

    /**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 学习日志创建时间（用户开始学习该课时的时间）
     */
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /**
     * 课程编号（关联课程表主键）
     */
    @TableField("course_id")
    private Long courseId;

    /**
     * 课程名称（冗余存储，记录学习时的课程名称）
     */
    @TableField("course_name")
    private String courseName;

    /**
     * 章节编号（关联章节表主键）
     */
    @TableField("chapter_id")
    private Long chapterId;

    /**
     * 章节名称（冗余存储，记录学习时的章节名称）
     */
    @TableField("chapter_name")
    private String chapterName;

    /**
     * 课时编号（关联课时表主键，标识具体学习的课时）
     */
    @TableField("period_id")
    private Long periodId;

    /**
     * 课时名称（冗余存储，记录学习时的课时名称）
     */
    @TableField("period_name")
    private String periodName;

    /**
     * 用户编号（关联用户表唯一标识）
     */
    @TableField("user_code")
    private String userCode;

    @Override
    public Serializable pkVal() {
        return this.id;
    }
}
